package com.zhike.service.messages;

import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhike.common.dto.DelAllMessageDTO;
import com.zhike.common.dto.MessagePageDTO;
import com.zhike.common.repository.HistoryMessage;

public interface IHistoryMessageRepository {
    /**
     * 批量添加历史消息
     * 
     * @param historyMessage
     */
    void addHistoryMessage(HistoryMessage historyMessage);

    /**
     * 保存历史消息
     *
     * @param historyMessage
     */
    @Deprecated
    void saveHistoryMessage(HistoryMessage historyMessage);

    void flush();

    /**
     * 根据消息指纹码查询历史消息
     *
     * @param fp
     * @return
     */
    HistoryMessage findHistoryMessageByFp(String fp);

    /**
     * 查询群下用户的会话数据
     * @param groupId
     * @param senderUid
     * @return
     */
    HistoryMessage findHistoryMessageByGroup(String groupId,String senderUid);

    /**
     * 根据消息会话ID查询历史消息
     * 
     * @param sessionId
     * @return
     */
    List<HistoryMessage> findHistoryMessageBySession(String sessionId);

    /**
     * 分页查询
     *
     * @param targetId //接收者ID
     * @param current
     * @return
     */
    List<HistoryMessage> findHistoryMessagePage(String uid, MessagePageDTO dto);

    /**
     * 更新已读消息状态
     * 
     * @param objIds
     */
    @Deprecated
    long updateReadStatus(String fromUid, String toUid) throws Exception;

    /**
     * 更新撤销状态
     * 
     * @param dto
     * @return
     */
    Boolean revokeMessage(String fp);

    /**
     * 清空所有消息
     * 
     * @param dto
     * @return
     */
    boolean deleteAllMessage(DelAllMessageDTO dto);

    /*
     * 分页查询
     *
     * @param fakeId
     * 
     * @param current
     * 
     * @param pageSize
     * 
     * @return
     */
    IPage<HistoryMessage> adminfindHistoryMessagePage(String fakeId, Integer current, Integer pageSize);

}
